<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台（PHP版）
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码，建议反馈是我们前进的动力
// | 开源版本可自由商用，可去除界面版权logo
// | gitee下载：https://gitee.com/likeshop_gitee/likeadmin
// | github下载：https://github.com/likeshop-github/likeadmin
// | 访问官网：https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------

namespace app\adminapi\lists\user;


use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsExcelInterface;
use app\common\model\user\UserGroup;
use app\common\lists\ListsSearchInterface;


/**
 * user列表
 * Class UserGroupLists
 * @package app\adminapi\lists
 */
class UserGroupLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface
{

    public function setSearch(): array
    {
        return [
            '=' => ['email', 'mobile', 'pid', 'user_money', '', 'card_free', 'card_sum','tag_ids'],
            '%like%' => ['company_name', 'abbreviation','tag_ids'],
        ];
    }


    /**
     * @notes 获取user列表
     * @return array
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     * @author likeadmin
     * @date 2025/04/10 10:26
     */
    public function lists(): array
    {
        //增加服务费，U服务费,卡位限制
        return UserGroup::where($this->searchWhere)
            ->field(['id', 'company_name','remark', 'email', 'mobile', 'pid', 'user_money', 'user_money_total', 'from_business', 'card_used',
                '(card_sum - card_used) as card_free','card_limit' ,'card_sum','abbreviation','serverchargerate','serverUchargerate','tag_ids','is_disable' ])
            ->limit($this->limitOffset, $this->limitLength)
            ->order(['id' => 'desc'])
            ->select()
            ->toArray();
    }


    /**
     * @notes 获取user数量
     * @return int
     * @author likeadmin
     * @date 2025/04/10 10:26
     */
    public function count(): int
    {
        return UserGroup::where($this->searchWhere)->count();
    }

    /**
     * @notes 导出文件名
     */
    public function setFileName(): string
    {
        return '客户列表';
    }

    /**
     * @notes 导出字段
     */
    public function setExcelFields(): array
    {
        return [
            'id' => '商户id',
            'company_name' => '商户名称',
            'email' => '商户邮箱',
            'mobile' => '手机号码',
            'card_used'=>'已用卡位',
            'card_free'=>'剩余卡位',
            'card_sum'=>'总卡位',
            'card_limit'=>'卡位限制',
            'abbreviation' => '简称',
            'serverchargerate'=>'转账服务费',
            'serverUchargerate'=>'扫码服务费',
            'remark' => '备注',
            'tag_ids' => '标签'
        ];
    }

}